// 在该案例中，应用代码首先创建一个argv参数指定的新文件
// 如果创建成功则使用fpriintf函数输入4个格式 数据，然后定位到文件的开头
// 再使用fscanf函数逐个读取出来发送至屏幕示
//
//需要主要的是：fscanf函数无法获取单个char字符数据
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]){
	
	// 定义long\float\string\char 4种类型的数据
	long ld;
	float fd;
	char sd[81];
	char cd = 'a';
	char cdd;

	FILE *fpstream;

	int iofd;

	if(argc != 2){
		printf("Please input the current para!\n");
		return -1;
	}
	
	fpstream = fopen(*(argv+1), "a+b");

	if(fpstream == NULL){
		printf("文件%s打开失败!\n", *(argv+1));
		return -2;
	}

	// 当创建文件后，将4种数据格式写入到文件中，并通过fscanf函数读取出来
	iofd = fprintf(fpstream, "%ld %f %s %c \n", 9999,3.1415926, "HelloWorld!", 'x');

	if(iofd == 0){
		printf("数据写入失败!\n");
		return -3;
	}else{

		// 需要定位至头文件
		fseek(fpstream, 0, SEEK_SET);

		// 如果数据成功写入，则使用fscanf函数读取出来
		printf("1:%d\n" ,fscanf(fpstream, "%ld", &ld) );
		fscanf(fpstream, "%f", &fd);
		fscanf(fpstream, "%s", sd);
		printf("4:%d\n",fscanf(fpstream, "%c", &cdd));
		
		printf("ld = %ld\n", ld);
		printf("fd = %f\n", fd);
		printf("sd = %s\n", sd);
		//cdd = 'x';
		printf("cd = %c\n", cdd);
	}
	
	fclose(fpstream);

	return 0;

}
